/* Copyright (C) 2021 Rain */

/* This file is part of XNIX. */

/* 
  XNIX is free software: you can redistribute it and/or modify 
  it under the terms of the GNU General Public License as published by 
  the Free Software Foundation, either version 3 of the License, or 
  (at your option) and later version. 
*/

/*
  XNIX is distributed in the hope that it will be useful, 
  but WITHOUT ANY WARRANTY; without even the implied warranty of 
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
  GNU General Public License for more details. 
*/

/*
  You should have received a copy of the GNU General Public License 
   along with XNIX. If not, see <https://www.gnu.org/licenses/>.  
*/



.globl do_timer

do_timer:
	/* we don't do a lot of things here */

	incq jiffies(%rip)

	movq jiffies(%rip), %rax

	andq $3, %rax
	jnz 1f

	xorq %rax, %rax

	call serial_read

	cmpl $0, %eax
	je 1f

	movq stdout(%rip), %rdi
	movl %eax, %esi
	call serial_write

1:	callq do_clock

	ret


.data

.globl jiffies

jiffies:
	.quad 0

